Есть вот такой простенький код из книги:
<a href="#1" onclick='davai();'>ID=1</a>
<a href="#2" onclick='davai();'>ID=2</a>
<div id="mydivelement"></div>
var xmlHttp = createXMLHTTP();
function createXMLHTTP(){
var xmlHttp;
try{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
myDiv.innerHTML += "XMLHttpRequest - Ошибка создания экземпляра<br/>";
}
if(xmlHttp) return xmlHttp;
}
function davai(){
var uri = location.hash;
if(uri!=""){
uri = uri.replace("#", "");
uri = "?id="+uri;
}
if(xmlHttp)
try{
xmlHttp.open("GET","text.php/"+uri,true);
xmlHttp.onreadystatechange = handles;
xmlHttp.send(null);
} catch(e)
{
alert("Невозможно соеденится с сервером\n" + e.toString());
}
}
function handles(){
myDiv = document.getElementById("mydivelement");
if(xmlHttp.readyState == 1)
{
myDiv.innerHTML += "Запрос отправляется<br/>";
}
else if (xmlHttp.readyState==2)
{
myDiv.innerHTML += "Запрос отправлен<br/>";
}
else if (xmlHttp.readyState==3)
{
myDiv.innerHTML += "Идёт обмен<br/>";
}
else if (xmlHttp.readyState==4)
{
if(xmlHttp.status==200) {
try
{
response = xmlHttp.responseText;
myDiv.innerHTML += "Запрос завершён.<br/>";
myDiv.innerHTML += response+"<br/>";
} catch(e){
alert("Ошибка получения данных\n" + e.toString());
}
}
}
}
<?php
header("Content-Type: text/html;charset=windows-1251");
if($_GET["id"]==1){
$text = "id=1";
} else if($_GET["id"]==2){
$text = "id=2";
} else $text = "0";
echo $text;
?>
При клике по ссылке в запрос попадает старое значение.
Почему сначала обрабатывается функция, а потом меняется URL?
Можно как нибудь сделать наоборот?